// 泛型：类型变量
function compiler<T>(template: T): T {
  return template;
}
compiler<String>("hello");
// 方式1
console.log(compiler<String>("hello"));
// 方式2：类型推导
console.log(compiler("类型推导"));

// 泛型约束
interface Len {
  length: number;
}

function compiler2<T extends Len>(template: T): T {
  console.log(template.length);
  return template;
}
console.log(compiler2([]));
